package controle;

import java.util.Date;
import java.util.List;

import modelo.Equipe;
import modelo.Jogo;
import dao.DAOFactory;
import dao.EquipeDAO;
import dao.JogoDAO;

public class ControleJogo {

	/* CRUD */
	public void salvar(Jogo jogo) throws Exception {
		if (jogo.getEquipe1() == null) {
			throw new Exception("A equipe � obrigatoria!");
		}
		if (jogo.getEquipe2() == null) {
			throw new Exception("A equipe � obrigatoria!");
		}

		if (jogo.getEstadio() == null || jogo.getEstadio().trim().isEmpty()) {
			throw new Exception("O estadio � obrigatorio");
		}
		
		if (jogo.getPlacarEquipe1() == null || jogo.getPlacarEquipe1().trim().isEmpty()) {
			throw new Exception("O placar � obrigatorio");
		}
		if (jogo.getPlacarEquipe2() == null || jogo.getPlacarEquipe1().trim().isEmpty()) {
			throw new Exception("O placar � obrigatorio");
		}
		
		if (jogo.getEstadio() == null || jogo.getEstadio().trim().isEmpty()) {
			throw new Exception("O estadio � obrigatorio");
		}
		if (jogo.getData() == null) {
			throw new Exception("A data � obrigatoria");
		}
		if (jogo.getHora() == null) {
			throw new Exception("A hora � obrigatoria");
		}
		if (jogo.getEquipe1() == jogo.getEquipe2() ) {
			throw new Exception("As Equipes devem ser distintas");
		}
		JogoDAO jogoDao = DAOFactory.getJogoDAO();
		if (jogo.getId() == 0) {
			jogoDao.salvar(jogo);
		} else {
			jogoDao.alterar();
		}
	}

	public void excluir(Jogo jogo) throws Exception {
		if (jogo == null) {
			throw new Exception(
					"� obrigat�rio selecionar um jogo para excluir!");
		}
		JogoDAO jogoDao = DAOFactory.getJogoDAO();
		jogoDao.excluir(jogo);
	}

	/* FIM CRUD */

	/* LISTA */
	public List<Equipe> listarEquipes() {
		EquipeDAO equipeDao = DAOFactory.getEquipeDAO();
		return equipeDao.buscarTodos();
	}

	public List<Jogo> listarTodos() {
		JogoDAO jogoDao = DAOFactory.getJogoDAO();
		return jogoDao.buscarTodos();
	}

	public  List<Jogo> buscarPorEquipe(Equipe equipe) throws Exception {
		if (equipe == null) {
			throw new Exception("A equipe � obrigat�ria para a consulta!");
		}
		JogoDAO jogoDao = DAOFactory.getJogoDAO();
		return  jogoDao.buscarPorEquipe(equipe);
	}
	
	public Jogo buscarPorId(long id) throws Exception {
		if (id <= 0) {
			throw new Exception("O ID � obrigat�rio para a consulta!");
		}
		JogoDAO jogoDao = DAOFactory.getJogoDAO();
		return jogoDao.buscarPorId(id);
	}

	public List<Jogo> buscarPorEstadio(String estadio) throws Exception {
		if (estadio == null || estadio.trim().isEmpty()) {
			throw new Exception("� obrigat�rio indicar um estadio para pesquisa!");
		}
		JogoDAO jogoDao = DAOFactory.getJogoDAO();
		return jogoDao.buscarPorEstadio(estadio);
	}

	public List<Jogo> buscarPorData(Date data) throws Exception {
		if (data == null){
			throw new Exception(
					"� obrigat�rio indicar uma Data para pesquisa!");
		}
		JogoDAO jogoDao = DAOFactory.getJogoDAO();
		return jogoDao.buscarPorData(data);
	}
	/* FIM LISTA */


}
